﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;

namespace AcademiaInteligenteWeb
{
    public partial class ConsultarClientePagamento : System.Web.UI.Page
    {
        public List<WsAcademiaInteligente.Cliente> Clientes { get; set; }
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                grdClientes.DataKeyNames = new string[] { "id" };
                AtualizarGrid();
            }
            Clientes = new WsAcademiaInteligente.WsAcademiaInteligenteSoapClient().ListarCliente().ToList();
        }

        protected void btnConsultar_Click(object sender, EventArgs e)
        {
            List<WsAcademiaInteligente.Cliente> clientesFiltrados = SelecionarClientesDevendo();
            if (Request["pagamentos"].ToString() == "2")
            {
                grdClientes.DataSource = clientesFiltrados;
                grdClientes.DataBind();
            }
            else if (Request["pagamentos"].ToString() == "3")
            {
                Clientes.RemoveAll(c => clientesFiltrados.Contains(c));
                grdClientes.DataSource = Clientes ;
                grdClientes.DataBind();
            }
        }

        public List<WsAcademiaInteligente.Cliente> SelecionarClientesDevendo()
        {
            List<WsAcademiaInteligente.Cliente> clientesFiltrados = new List<WsAcademiaInteligente.Cliente>();
            foreach (var cliente in Clientes)
            {
                bool achou = false;
                DateTime dataMatricula = DateTime.MinValue;
                foreach (var item in cliente.ClienteAcademia)
                {
                    if (item.id_academia == Convert.ToInt32(Session[Util.SESSION_ACADEMIA_ID]))
                    {
                        dataMatricula = item.data_inclusao;
                    }
                }
                DateTime dataAux = dataMatricula.AddMonths(1);
                while (dataAux < DateTime.Now)
                {
                    if (cliente.ClientePagamento == null || cliente.ClientePagamento.Count() == 0)
                    {
                        clientesFiltrados.Add(cliente);
                        achou = true;
                    }
                    if (!achou)
                    {
                        bool pagou = false;
                        foreach (var item in cliente.ClientePagamento)
                        {
                            if (item.data_vencimento.Month == dataAux.Month)
                            {
                                pagou = true;
                            }
                        }
                        if (!pagou)
                        {
                            clientesFiltrados.Add(cliente);
                            achou = true;
                        }
                        dataAux = dataAux.AddMonths(1);
                    }
                    if (achou)
                        break;
                }
                if (achou)
                    continue;
            }
            return clientesFiltrados;
        }

        public void AtualizarGrid()
        {
            grdClientes.DataSource = Clientes;
            grdClientes.DataBind();
        }

        protected void grdClientes_RowDataBound(object sender, GridViewRowEventArgs e)
        {
            string dataPagamento = string.Empty;
            if (e.Row.RowType == DataControlRowType.DataRow)
            {
                WsAcademiaInteligente.Cliente cliente = (WsAcademiaInteligente.Cliente)e.Row.DataItem;
                List<WsAcademiaInteligente.Cliente> devendoClientes = SelecionarClientesDevendo();
                if (devendoClientes.Contains(cliente))
                {
                    DateTime dataMatricula = DateTime.MinValue;
                    foreach (var item in cliente.ClienteAcademia)
                    {
                        if (item.id_academia == Convert.ToInt32(Session[Util.SESSION_ACADEMIA_ID]))
                        {
                            dataMatricula = item.data_inclusao;
                        }
                    }
                    DateTime dataAux = dataMatricula.AddMonths(1);
                    while (dataAux < DateTime.Now)
                    {
                        bool pagou = false;
                        foreach (var item in cliente.ClientePagamento)
                        {
                            if (item.data_vencimento.Month == dataAux.Month)
                            {
                                pagou = true;
                            }
                        }
                        if (!pagou)
                        {
                            dataPagamento += dataMatricula.Day + "/" + dataAux.Month + "/" + dataAux.Year + "<br/>";
                        }

                        dataAux =dataAux.AddMonths(1);
                    }
                }
                ((e.Row.FindControl("lblPagamentosPendtes")) as Label).Text = dataPagamento;
            }
        }

    }
}